--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
scripts/build/fetch_repository_wheels.py legacy/win7 (159b2358) Text, 3.60 KB
T8b949e#!/usr/bin/env python3
T8b949e"""Download repository bundled wheels at build time (offline-first installs).
Wheels are written to ``meshchatx/public/repository-server-bundled/bundled`` so they
ship with the same artifact layout as the Vite output. At runtime,
:class:`~meshchatx.src.backend.repository_server_manager.RepositoryServerManager`
copies any missing ``*.whl`` files from that directory into each identity's
``repository-server/bundled`` folder (no network required).
The PyPI/sdist wheel intentionally omits this tree (see ``MANIFEST.in`` and
``tool.setuptools.exclude-package-data``); use this script for desktop or
Android builds, or refresh bundled wheels when online. If
``dist/reticulum_meshchatx-*.whl`` exists at the project root, it is copied into
the bundled directory after PyPI downloads so the shipped wheel matches this
tree.
Usage::
python3 scripts/build/fetch_repository_wheels.py [--dest DIR]
Environment::
MESHCHATX_SKIP_REPOSITORY_WHEELS_FETCH If ``1``/``true``, exit without downloading.
"""
Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations
Tff7b72import T7ee787argparse
Tff7b72import T7ee787logging
Tff7b72import T7ee787os
Tff7b72import T7ee787sys
Tff7b72from T7ee787pathlib Tff7b72import Te6edf3Path
Te6edf3DEFAULT_DEST Tff7b72= Tb4b4b4(
Te6edf3PathTb4b4b4(Tff7b72__file__Tb4b4b4)Tff7b72.Td2a8ffresolveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffparentTff7b72.Td2a8ffparentTff7b72.Td2a8ffparent
Tff7b72/ Ta5d6ff"Ta5d6ffmeshchatxTa5d6ff"
Tff7b72/ Ta5d6ff"Ta5d6ffpublicTa5d6ff"
Tff7b72/ Ta5d6ff"Ta5d6ffrepository-server-bundledTa5d6ff"
Tff7b72/ Ta5d6ff"Ta5d6ffbundledTa5d6ff"
Tb4b4b4)
Tff7b72def Td2a8ff_is_truthyTb4b4b4(Te6edf3valueTb4b4b4: Tffa657str Tff7b72| Tff7b72NoneTb4b4b4) Tff7b72-Tff7b72> Tffa657boolTb4b4b4:
Tff7b72return Te6edf3value Tff7b72is Tff7b72not Tff7b72None Tff7b72and Te6edf3valueTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4) Tff7b72in Tb4b4b4{Ta5d6ff"Ta5d6ff1Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftrueTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffyesTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffonTa5d6ff"Tb4b4b4}
Tff7b72def Td2a8ffmainTb4b4b4(Te6edf3argvTb4b4b4: Tffa657listTb4b4b4[Tffa657strTb4b4b4] Tff7b72| Tff7b72None Tff7b72= Tff7b72NoneTb4b4b4) Tff7b72-Tff7b72> Tffa657intTb4b4b4:
Te6edf3loggingTff7b72.Td2a8ffbasicConfigTb4b4b4(Te6edf3levelTff7b72=Te6edf3loggingTff7b72.Td2a8ffINFOTb4b4b4, Tffa657formatTff7b72=Ta5d6ff"Tffd700%(message)sTa5d6ff"Tb4b4b4)
Tff7b72if Te6edf3_is_truthyTb4b4b4(Te6edf3osTff7b72.Td2a8ffenvironTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffMESHCHATX_SKIP_REPOSITORY_WHEELS_FETCHTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3loggingTff7b72.Td2a8ffinfoTb4b4b4(
Ta5d6ff"Ta5d6ffSkipping repository wheels fetch (MESHCHATX_SKIP_REPOSITORY_WHEELS_FETCH).Ta5d6ff"
Tb4b4b4)
Tff7b72return T79c0ff0
Te6edf3repo_root Tff7b72= Te6edf3PathTb4b4b4(Tff7b72__file__Tb4b4b4)Tff7b72.Td2a8ffresolveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffparentTff7b72.Td2a8ffparentTff7b72.Td2a8ffparent
Te6edf3rr Tff7b72= Tffa657strTb4b4b4(Te6edf3repo_rootTb4b4b4)
Tff7b72if Te6edf3rr Tff7b72not Tff7b72in Te6edf3sysTff7b72.Td2a8ffpathTb4b4b4:
Te6edf3sysTff7b72.Td2a8ffpathTff7b72.Td2a8ffinsertTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3rrTb4b4b4)
Te6edf3parser Tff7b72= Te6edf3argparseTff7b72.Td2a8ffArgumentParserTb4b4b4(Te6edf3descriptionTff7b72=Tff7b72__doc__Tff7b72.Td2a8ffsplitTb4b4b4(Ta5d6ff"Tffea00\nTffea00\nTa5d6ff"Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)
Te6edf3parserTff7b72.Td2a8ffadd_argumentTb4b4b4(
Ta5d6ff"Ta5d6ff--destTa5d6ff"Tb4b4b4,
Tffa657typeTff7b72=Te6edf3PathTb4b4b4,
Te6edf3defaultTff7b72=Te6edf3DEFAULT_DESTTb4b4b4,
Te6edf3helpTff7b72=Ta5d6fffTa5d6ff"Ta5d6ffOutput directory (default: Tffd700{Te6edf3DEFAULT_DESTTffd700}Ta5d6ff)Ta5d6ff"Tb4b4b4,
Tb4b4b4)
Te6edf3args Tff7b72= Te6edf3parserTff7b72.Td2a8ffparse_argsTb4b4b4(Te6edf3argvTb4b4b4)
Te6edf3destTb4b4b4: Te6edf3Path Tff7b72= Te6edf3argsTff7b72.Td2a8ffdestTff7b72.Td2a8ffresolveTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3_is_truthyTb4b4b4(Te6edf3osTff7b72.Td2a8ffenvironTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffMESHCHATX_OFFLINE_BUILDTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3destTff7b72.Td2a8ffis_dirTb4b4b4(Tb4b4b4) Tff7b72and Tffa657anyTb4b4b4(Te6edf3destTff7b72.Td2a8ffglobTb4b4b4(Ta5d6ff"Ta5d6ff*.whlTa5d6ff"Tb4b4b4)Tb4b4b4)Tb4b4b4:
Te6edf3loggingTff7b72.Td2a8ffinfoTb4b4b4(
Ta5d6ff"Ta5d6ffMESHCHATX_OFFLINE_BUILD=1 and repository bundled wheels already present; skipping fetch.Ta5d6ff"
Tb4b4b4)
Tff7b72return T79c0ff0
Te6edf3loggingTff7b72.Td2a8fferrorTb4b4b4(
Ta5d6ff"Ta5d6ffMESHCHATX_OFFLINE_BUILD=1 but repository bundled wheels are missing at Tffd700%sTa5d6ff"Tb4b4b4,
Te6edf3destTb4b4b4,
Tb4b4b4)
Tff7b72return T79c0ff1
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787repository_server_manager Tff7b72import Tb4b4b4(
Te6edf3download_bundled_wheels_to_directoryTb4b4b4,
Tb4b4b4)
Te6edf3destTff7b72.Td2a8ffmkdirTb4b4b4(Te6edf3parentsTff7b72=Tff7b72TrueTb4b4b4, Te6edf3exist_okTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72for Te6edf3old Tff7b72in Te6edf3destTff7b72.Td2a8ffglobTb4b4b4(Ta5d6ff"Ta5d6ff*.whlTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3oldTff7b72.Td2a8ffunlinkTb4b4b4(Tb4b4b4)
Tff7b72except Tf85149OSError Tff7b72as Te6edf3eTb4b4b4:
Te6edf3loggingTff7b72.Td2a8ffwarningTb4b4b4(Ta5d6ff"Ta5d6ffCould not remove Tffd700%sTa5d6ff: Tffd700%sTa5d6ff"Tb4b4b4, Te6edf3oldTb4b4b4, Te6edf3eTb4b4b4)
Te6edf3result Tff7b72= Te6edf3download_bundled_wheels_to_directoryTb4b4b4(Te6edf3destTb4b4b4)
Te6edf3failed Tff7b72= Te6edf3resultTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6fffailedTa5d6ff"Tb4b4b4) Tff7b72or Tb4b4b4{Tb4b4b4}
Te6edf3ok Tff7b72= Te6edf3resultTff7b72.Td2a8ffgetTb4b4b4(Ta5d6ff"Ta5d6ffdownloadedTa5d6ff"Tb4b4b4) Tff7b72or Tb4b4b4[Tb4b4b4]
Tff7b72if Te6edf3failedTb4b4b4:
Tff7b72for Te6edf3pkgTb4b4b4, Te6edf3msg Tff7b72in Te6edf3failedTff7b72.Td2a8ffitemsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3loggingTff7b72.Td2a8fferrorTb4b4b4(Ta5d6ff"Tffd700%sTa5d6ff: Tffd700%sTa5d6ff"Tb4b4b4, Te6edf3pkgTb4b4b4, Te6edf3msgTb4b4b4[Tb4b4b4:T79c0ff500Tb4b4b4]Tb4b4b4)
Tff7b72if Te6edf3okTb4b4b4:
Te6edf3loggingTff7b72.Td2a8ffinfoTb4b4b4(Ta5d6ff"Ta5d6ffRepository wheels OK: Tffd700%sTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ff, Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3okTb4b4b4)Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3ok Tff7b72and Te6edf3failedTb4b4b4:
Tff7b72return T79c0ff1
Tff7b72if Te6edf3failedTb4b4b4:
Te6edf3loggingTff7b72.Td2a8ffwarningTb4b4b4(
Ta5d6ff"Ta5d6ffRepository wheels partial success (Tffd700%dTa5d6ff ok, Tffd700%dTa5d6ff failed).Ta5d6ff"Tb4b4b4,
Tffa657lenTb4b4b4(Te6edf3okTb4b4b4)Tb4b4b4,
Tffa657lenTb4b4b4(Te6edf3failedTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72return T79c0ff0
Tff7b72return T79c0ff0
Tff7b72if Tff7b72__name__ Tff7b72== Ta5d6ff"Ta5d6ff__main__Ta5d6ff"Tb4b4b4:
Tff7b72raise Tf85149SystemExitTb4b4b4(Te6edf3mainTb4b4b4(Tb4b4b4)Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────